<?php
//Retourne l'extension d'un fichier
function get_extension($nom) 
{
    $nom = explode(".", $nom);
    $nb = count($nom);
    return strtolower($nom[$nb-1]);
}
//Fonction qui permet de g�rer un fichier
function test_fichier($fichier, $extensions_ok, $taille_max_o)
{
    $erreurs = "";
    //Passage de la taille en octets � Mo
    $taille_max_mo = ($taille_max_o / 1024) / 1024;
    //On regarde les erreurs pr�sentes
    switch ($fichier['error']) 
    {
        case 1:
          $erreurs[] = "Votre image doit faire moins de $taille_max_mo Mo !";
          break;
        case 2:
          $erreurs[] = "Votre image doit faire moins de $taille_max_mo Mo !";
          break;
        case 3:
          $erreurs[] = "L'image n'a �t� que partiellement t�l�charg�.";
          break;
        case 6:
          $erreurs[] = "Un dossier temporaire est manquant.";
          break;
        case 7:
          $erreurs[] = "�chec de l'�criture du fichier sur le disque.";
          break;
    }
    //On test maintenant l'extension du document
    if(!in_array( get_extension($fichier['name']), $extensions_ok ))
    {
        $erreurs[] = 'Veuillez s�lectionner un fichier de type PDF !';
    }
    //On v�rifie le poids de l'image
    if($taille_max_o != "")
    {
        if(file_exists($fichier['tmp_name']) and filesize($fichier['tmp_name']) > $taille_max_o)
        {
            $erreurs[] = "Votre fichier doit faire moins de ".$taille_max_mo." Mo !";
        } 
    }
    return $erreurs;
}
//Fonction qui supprime un fichier surle serveur
function supprime_fichier($chemin)
{
    unlink($chemin);
}
//Fonction qui d�place un fichier sur le serveur
function deplace_fichier($fichier, $emplacement, $nom, $extension, &$message)
{
    if(move_uploaded_file($fichier['tmp_name'], $emplacement.$nom.".".$extension)) 
    {
        $retour = true;
        $message = "Fichier envoy� avec succ�s (<a target='_blank' href='".$emplacement.$nom.".".$extension."'>Voir</a>)";
    } 
    else 
    {
        $retour = false;
        $message = "Impossible d'envoyer le fichier.<br />Veuillez contacter l'administrateur (v�rifier que le dossier ".$emplacement." existe avec un chmod 755 (ou 777)).";
    }
    return $retour;
}
//Fonction qui permet d'afficher les pages
function pagination($requete, $page_actuelle, $page_get)
{
    $result = $GLOBALS['bdd']->query($requete);
    $reglage = new reglage(4);
    $valeur = new valeur($reglage->valeur_reglage());
    $limit = $page_actuelle * $valeur->get_nom() - $valeur->get_nom();
	if(mysql_num_rows($result) > $valeur->get_nom())
	{
	   //Si il y a plusieurs pages
		?>
		<center>
			<p style="font-size: 12px; font-style: italic; text-align: center;">
            Aller a la page :
			<?php
			if ($page_actuelle != 1)
			{
    			$no_page_prec = $page_actuelle - 1;
                ?>
    				<a href="<?php echo ajouterParametreGET($_SERVER["REQUEST_URI"], $page_get, $no_page_prec);?>">Pr�c�dente</a>
    			<?php
			}
		$i = 0;
		$num_page = 1;
		$nb = 1;
        //Tant q'il reste des pages
		while ( $nb > 0)
		{
			if($page_actuelle == $num_page)
			{
			     ?>
                 <b><?php echo $num_page;?></b>
			     <?php
			}
			else
			{
			     ?>
			     <a href="<?php echo ajouterParametreGET($_SERVER["REQUEST_URI"], $page_get, $num_page);?>"><?php echo $num_page;?></a>
			     <?php
			}
			$num_page = $num_page + 1;
			$i = $i + $valeur->get_nom();
			$rq = $GLOBALS['bdd']->query($requete." LIMIT ".$i.", ".$valeur->get_nom().";") or die(mysql_error());
			$nb = mysql_num_rows($rq);
		}
		if($page_actuelle != $num_page - 1 && $num_page != 1)
		{
			$no_page_suiv = $page_actuelle + 1;
            ?>
			<a href="<?php echo ajouterParametreGET($_SERVER["REQUEST_URI"], $page_get, $no_page_suiv);?>">Suivante</a>
            <?php
		}
        ?>
        </p>
        <?php
    }
}
// -----------------------------------------
// Ajoute/Modifie un parametre � un URL.
// -----------------------------------------
function ajouterParametreGET($url, $paramNom, $paramValeur)
{
    $urlFinal = "";
    if($paramNom=="")
    {
        $urlFinal = $url;
    }
    else
    {
        $t_url = explode("?",$url);
        if(count($t_url)==1)
        {
            // pas de queryString
            $urlFinal .= $url;
            if(substr($url,strlen($url)-1,strlen($url))!="/")
            {
                $t_url2 = explode("/",$url);
                if(preg_match("/./",$t_url2[count($t_url2)-1])==false)
                {
                    $urlFinal .= "/";
                }
            }
            $urlFinal .= "?".$paramNom."=".$paramValeur;
        }
        else if(count($t_url)==2)
        {
            // il y a une queryString
            $paramAAjouterPresentDansQueryString = "non";
            $t_queryString = explode("&",$t_url[1]);
            foreach($t_queryString as $cle => $coupleNomValeur)
            {
                $t_param = explode("=",$coupleNomValeur);
                if($t_param[0]==$paramNom)
                {
                    $paramAAjouterPresentDansQueryString = "oui";
                }
            }
            if($paramAAjouterPresentDansQueryString=="non")
            {
                // le parametre � ajouter n'existe pas encore dans la queryString
                $urlFinal = $url."&".$paramNom."=".$paramValeur;
            }
            else if($paramAAjouterPresentDansQueryString=="oui")
            {
                // le parametre � ajouter existe d�j� dans la queryString
                // donc on va reconstruire l'URL
                $urlFinal = $t_url[0]."?";
                foreach($t_queryString as $cle => $coupleNomValeur)
                {
                    if($cle > 0)
                    {
                        $urlFinal .= "&";
                    }
                    $t_coupleNomValeur = explode("=",$coupleNomValeur);
                    if($t_coupleNomValeur[0]==$paramNom)
                    {
                        $urlFinal .= $paramNom."=".$paramValeur;
                    }
                    else
                    {
                        $urlFinal .= $t_coupleNomValeur[0]."=".$t_coupleNomValeur[1];
                    }
                }
            }
        }
    }
    return $urlFinal;
}

//Fonction permet l'envoi de mail
function envoi_mail($email_expediteur, $email_destinataire, $message, $pieces_jointes)
{
    //-----------------------------------------------
    //DECLARE LES VARIABLES
    //-----------------------------------------------
    
    $message_texte='Bonjour,'."\n\n".'Voici un message au format texte';
    
    //-----------------------------------------------
    //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
    //-----------------------------------------------
    
    $frontiere = '-----=' . md5(uniqid(mt_rand()));
    
    //-----------------------------------------------
    //HEADERS DU MAIL
    //-----------------------------------------------
    
    $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
    $headers .= 'Return-Path: <'.$email_destinataire.'>'."\n";
    $headers .= 'MIME-Version: 1.0'."\n";
    $headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
    
    //-----------------------------------------------
    //MESSAGE TEXTE
    //-----------------------------------------------
    $message = 'This is a multi-part message in MIME format.'."\n\n";
    
    $message .= '--'.$frontiere."\n";
    $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
    $message .= $message_texte."\n\n";
    
    //-----------------------------------------------
    //MESSAGE HTML
    //-----------------------------------------------
    $message .= '--'.$frontiere."\n";
    
    $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
    $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
    $message .= $message."\n\n";
    
    $message .= '--'.$frontiere.'--'."\n";
    
    //-----------------------------------------------
    //PIECE JOINTE
    //-----------------------------------------------
    //On va lir ele tableau de pi�ces jointes
    foreach($pieces_jointes as $une_piece_jointe)
    {
        $message .= 'Content-Type: image/jpeg; name="'.$une_piece_jointe.'"'."\n";
        $message .= 'Content-Transfer-Encoding: base64'."\n";
        $message .= 'Content-Disposition:attachement; filename="nom_du_fichier.jpg"'."\n\n";
        
        $message .= chunk_split(base64_encode(file_get_contents('nom_du_fichier.jpg')))."\n";  
    }
    
    if(mail($destinataire,$sujet,$message,$headers))
    {
      echo '<h6>Le message a �t� envoy�, il sera trait� dans les plus brefs d�lais.</h6>';
    }
    else
    {
      echo '<h6>Le message n\'a pu �tre envoy�</h6>';
    }
}
/**
* Fonction qui r�cup�re l'adresse IP du visiteur
*
* @return String Adresse IP 
*/
function IP(){
    if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        if(strchr($_SERVER['HTTP_X_FORWARDED_FOR'],','))
        {
             $tab=explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
             $realip=$tab[0];
        }
        else
        {
            $realip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
    }
    else
    {
    	$realip=$_SERVER['REMOTE_ADDR'];
    }
    
    return $realip;
}
/**
* G�n�rer une nouvelle variable de session
* est utilis�e lors de la cr�ation ou lors d'une tentative de vol de session
*/
function NewSession()
{
    unset($_SESSION);
    session_destroy();
    //On copie la session dans une nouvelle session puis on vide cette nouvelle session
    session_regenerate_id();
    $_SESSION = Array();
    
    //D�finition de l'adresse IP en session
    $_SESSION['AGENT']    = $_SERVER['HTTP_USER_AGENT'];
    $_SESSION['ACCEPT']   = $_SERVER['HTTP_ACCEPT'];
    $_SESSION['LANGUAGE'] = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $_SESSION['ENCODING'] = $_SERVER['HTTP_ACCEPT_ENCODING'];
    $_SESSION['IP']       = IP();
}

/**
* Correspond � la fonction session_start() mais en version s�curis�e
*/
function session()
{
    session_start();

    if(!isset($_SESSION['IP']))
    {
        //Si la session n'a pas �t� initialis�e
        NewSession();
    }
    else
    {
        //Vérification de l'adresse IP, de l'encodage accept�, des langues accept�s et du navigateur
        if(
            $_SESSION['AGENT'] !== $_SERVER['HTTP_USER_AGENT']
            || $_SESSION['ACCEPT'] !== $_SERVER['HTTP_ACCEPT']
            || $_SESSION['LANGUAGE'] !== $_SERVER['HTTP_ACCEPT_LANGUAGE']
            || $_SESSION['ENCODING'] !== $_SERVER['HTTP_ACCEPT_ENCODING']
            || $_SESSION['IP'] !== IP()
        )
        {
            //Si une valeur n'est pas correcte, on �crase tout et on r��crit
            NewSession();
        }
    }
}
//Sécurité des pages d'administration
function securite($niveau_recquis)
{
    $ok = true;
    //$niveau_recquis = 0 ==> Visiteur
    //$niveau_recquis = 1 ==> Utilisateur connecté
    //$niveau_recquis = 2 ==> Particulier connecté
    //$niveau_recquis = 3 ==> Entreprise connecté
    //$niveau_recquis = 4 ==>
    
    switch($niveau_recquis){
        //Si il faut être connecté
        case 1:
            if(empty($_SESSION['utilisateur_id']))
            {
                $ok = false;
            }
        break;
        //Si il faut être un particulier connecté
        case 2:
        break;
        //Si il faut être une entreprise connectée
        case 3:
        break;
    }
    
    if($ok == false){
        ?>
        <span class="erreur">Vous n'avez pas les droits nécessaires pour voir cette page !</span>
        <?php
        exit();
    }
    
    
    
    
    /*
	//Si il faut 
	if($niveau_recquis == 1)
	{
		//On regarde si il est connect�
		if(!isset($_SESSION['id_administrateur']))
		{
			$ok = false;
		}
        else
        {
            //on test maintenant que l'utilisateur � bien le droit d'acceder � cette page
            if($id_page != "")
            {
                //On test le droit de l'utilisateur sur cette page
                if($GLOBALS['administrateur_connecter']->droit_menu_admin($id_page) == false)
                {
                    $ok = false;
                }
            }
        }
	}
	if($ok == false)
	{
		?>
        <span class="erreur">Vous n'avez pas les droits nécessaires pour voir cette page !</span>
        <?php
        exit();
    }
    */
}
// Fonction qui gère la région dans laquelle se trouve l'utilisateur
function choix_region(){
    // 1.On va chercher sa région préferée en bdd si l'utilisateur est connecté
    // 2.
    
}
?>